package br.com.poliwar.utils.grafo {
	import flash.geom.Matrix;
	/**
	 * ...
	 * @author specht
	 */
	public class Grafo{
		
		private var adjacencias:Vector.<Vector.<Boolean>>;
		private var quantidadeVertices:uint;
		
		public function Grafo(quantidade:uint = 1) {
			this.quantidadeVertices = quantidade;
			
			this.adjacencias = new Vector.<Vector.<Boolean>>();
			for (var i:int = 0 ; i < this.quantidadeVertices; i++ ) {
				var temp:Vector.<Boolean> = new Vector.<Boolean> ();
				for (var j:int = 0; j < this.quantidadeVertices; j++ ) {
					temp.push (false);
				}
				this.adjacencias[i] = temp;
			}
		}
		
		public function addAresta(aresta:Aresta):void {
			adjacencias[aresta.origem.index][aresta.destino.index] = true;
		}
		
		public function existAresta(origem:IVertice, destino:IVertice):Boolean {
			var resposta:Boolean = false;
			if (this.adjacencias[origem.index][destino.index] == true) {
				resposta = true;
			}
			
			return resposta;
		}
		
		public function listAdjacencias(origem:IVertice):Array {
			var resposta:Array = [];
			for (var i:int = 0; i < this.quantidadeVertices; i++) {
				if (this.adjacencias[origem.index][i] == 1) resposta.push(i);
			}
			return resposta;
		}
		
	}

}